package cn.ljy.uem.web.interceptor.backstage;

import cn.ljy.authority.config.security.UserUtil;
import cn.ljy.authority.model.SysUser;
import cn.ljy.common.model.result.ResponseData;
import cn.ljy.common.model.result.ResultCode;
import cn.ljy.common.utils.ResponseUtil;
import cn.ljy.uem.model.SchoolTeacher;
import cn.ljy.uem.service.common.CommonSchoolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 教师模块的拦截器
 * 主要针对后台需要教师身份的账户才能操作,本拦截要在后台账户登录拦截器之后执行
 */
public class SchoolTeacherInterceptor implements HandlerInterceptor {

    @Autowired
    private CommonSchoolService commonSchoolService;

    //private static final String[] IGNORE_URI = {};//定义不拦截的资源

    /**
     * 在请求处理之前进行调用（Controller方法调用之前）
     * 基于URL实现的拦截器
     * 在执行action里面的处理逻辑之前执行，它返回的是boolean，这里如果我们返回true在接着执行postHandle和afterCompletion，如果我们返回false则中断执行。
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        boolean flag = false;//默认验证失败，即拦截请求
        //获取当前登录账户信息
        SysUser sysUser = UserUtil.getLoginUser();
        //获取登录账户对应的学生信息
        SchoolTeacher teacher=commonSchoolService.getTeacher(sysUser);
        if(teacher!=null){
            flag=true;
        }else{
            ResponseUtil.responseJson(response, ResponseData.error(ResultCode.FORBIDDEN.getCode(),"操作失败：只有教师才能访问"));
        }
        return flag;
    }
}
